#ifndef ___procesar_comandos_estructuras

#define ___procesar_comandos_estructuras 1

struct rangoSectores {
  long inicio;
  long fin;
};

struct listaSectores {
  long * numeros;
  int cantidad;
};

typedef struct {
  unsigned char tipo;
    /*
       0 = no valido
       1 = un sector
       2 = un rango
       3 = aleatorios
       4 = lista
       5 = todo
    */
  union {
    long sector;
    struct rangoSectores rango;
    long cantidad;
    struct listaSectores lista;
  } valores;
} sectores_t;

typedef struct {
  unsigned char elem0;
  unsigned char elem1;
  unsigned char elem2;
  unsigned char elem3;
  unsigned short puerto;
  int cantidad;
} abrir_t;

typedef struct {
  sectores_t sectores;
  char bytes[512];
} escribir_t;

typedef struct {
  unsigned char tipo;
    /*
       0 = no valido
       1 = abrir
       2 = cerrar
       3 = usar disco
       4 = usar conexion
       5 = leer
       6 = escribir
       7 = probar
    */
  union {
    abrir_t abrir;
    long sectoresDisco;
    int conexion; // -1 = especial
    sectores_t sectoresLeer;
    escribir_t escribir;
  } datos;
} comando_t;

#endif